In computer related technologies, searching a database is a complex process that consumes significant computing resources. Certain searching techniques use an index that makes the search faster and more efficient. An index may include a data structure that improves the speed of data retrieval operations on a database table, but at the cost of slower writes and increased consumption of storage space. Indices can be created using one or more columns of a database table, providing the basis for both rapid random lookups and efficient access of ordered records. In a relational database, an index can be a copy of one part of a table, for example, a column of a table.
However, searching database tables can become relatively time consuming when the query requests results for which multiple tables have to be searched. The performance of the search may deteriorate even further if the query parameters include regular expressions and not exact names or values of the column.
Consider an example scenario where a search needs to retrieve entities and keys that are associated with each other. The entities may include, for example, names of software applications installed in a computer system and keys may include names of features provided by the software applications in the computer system. A software application and a feature are said to be associated with each other if the software application provides that feature. Further, consider an example in which information regarding software applications is stored in a “software_application” table of a database, information regarding features of the computer system is stored in a “features” table and the associations between the software applications and the features are stored in a “softwareapplication_features” table. Consider that the query may be intended to fetch names of all software applications and names of their associated features wherein the software application name has “XYZ” in its name and the feature has “123” in its name.
Such a query in the above example requires searching at least three tables and then filtering out the results that do not satisfy the query parameters. It may require scanning all rows in the “software_application” table to find the software applications that have substring “XYZ” in their names, then scanning all rows in “features” table to find features with substring “123” in their names and then finding the related software applications and features using the “software_features” table. Search techniques involving querying multiple tables in a database consume significant amount of computing resources. The efficiency of such techniques further diminishes as the table size increases or the associations become more complex.
The information regarding associations could be used in various applications for various purposes. For example, they could be used to analyze the performance of a set of computers in a network, analyze various aspects of an organization, generate reports, etc. that may provide valuable information. The information regarding associations could be obtained frequently and regularly by various applications, users, etc. Accordingly, it may be important to provide the information regarding associations to the requesting applications without any significant delay.